#ifndef _topic_messenger_conf_H__
#define _topic_messenger_conf_H__

/*
        Chinese is encoded in Unicode. If it is garbled, please change the encoding method of the editor.
        主题邮递库 By启凡科创 适用于APP之间无直接耦合进行通信

        注意：不同API内，如msg触发的回调函数内不能调用del，可以利用创建定时任务在指定时间后再del，同时独立调用是允许的，不能嵌套！！！
            同时，msg原理上支持msg的回调函数里再msg实现递归，但是原则上最好不要这么做，可能会导致宕机

        version:v1.0.3  2025-9-6 修复第一个节点添加子节点死机跑飞的bug
        version:v1.0.2  2025-3-19 添加list机制，可一次性携带多参数组
        version:v1.0.1  2025-3-2 添加优先级机制，可设置不同优先级，优化列表机制，加快查表效率
        version:v1.0.0  2025-2-20 发布第一个版本

    */

#if 1 // 1:启用库，0：关闭库

#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <stdbool.h>

#define topic_messenger_lib_en

typedef enum
{
    TOPIC_MESSENGER_SUCCESS = 0,
    TOPIC_MESSENGER_MALLOC_FAIL,
    TOPIC_MESSENGER_NO_SUBCRIBE,
    TOPIC_MESSENGER_NO_ANY_SUBCRIBE,
    TOPIC_MESSENGER_LIST_NULL,
    TOPIC_MESSENGER_LIST_ERR,
} topic_messenger_ret_t;

typedef enum
{
    TOPIC_MESSENGER_PRIORITY_LOW = 0,
    TOPIC_MESSENGER_PRIORITY_MIDDLE,
    TOPIC_MESSENGER_PRIORITY_HIGH,
} topic_messenger_priority_t;

// 默认内存管理函数
#define topic_messenger_malloc_func(x) malloc(x)
#define topic_messenger_free_func(x) free(x)

// 是（true）否（false）支持多线程访问,开启后在使用任意API前必须使用topic_messenger_mutex_register注册线程锁（仅第一次）
#define topic_messenger_support_rtos false

// 是（true）否（false）支持ESP平台，开启后使用ESP平台相关API,则无需自己注册线程锁
#define topic_messenger_platform_esp false

// 键值对默认优先级
#define topic_messenger_priority_default KEY_VALUE_PRIORITY_LOW

#endif // if 1

#endif // _topic_messenger_conf_H__